package com.itheima.多态;

import java.util.Scanner;

/*
    现在有这么一个数组: int[] arr = {22, 33, 22, 33, 22}, 现在键盘录入一个数, 查找该数在数组中的
    所有索引位置并将索引值记录到一个新的数组中, 将新的数组打印输出,效果如下:

    请输入要查找的元素:
    22
    [0, 2, 4]

    请输入要查找的元素:
    11
    您要查找的元素不存在!
 */
public class Test6Array {
    public static void main(String[] args) {
        //1. 创建一个数组
        int[] arr = {22, 33, 22, 33, 22};

        //2. 键盘录入要查找的元素
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要查找的元素:");
        int num = sc.nextInt();

        /*
            3. 核心思路: 要拿一个新数组来记录num在arr中出现的所有索引值
                首先要明确num在arr中出现了几次,出现了几次,新数组长度就是几
         */
        //3.1 定义一个计数器
        int count = 0;

        //3.2 遍历arr
        for (int i = 0; i < arr.length; i++) {
            if (num == arr[i]){
                count++;
            }
        }

        //4. 根据count来确定新数组长度,以及判断出要查找的元素在arr中存在
        if (count == 0 ){
            System.out.println("您要查找的元素不存在!");
        }else {
            //4.1 定义一个新数组,用来管理num在arr中出现的所有索引值
            int[] indexArr = new int[count];                //int[] indexArr = {0,0,0}

            //5. 遍历arr,得到num值的所有索引位置
            int j = 0;      // 用来管理indexArr的索引,用来记录当前数组已经记录到哪个索引位置了
            for (int i = 0; i < arr.length; i++) {
                if (num == arr[i]){
                    // 5.1 将i索引记录到 indexArr,
                    indexArr[j] = i;
                    j++;
                }
            }

            // 6. 遍历输出indexArr即可
            for (int i = 0; i < indexArr.length; i++) {
                if (i == 0) {
                    System.out.print("["+indexArr[i] + ", ");
                }else if (i != indexArr.length -1){
                    System.out.print(indexArr[i] + ", ");
                }else {
                    System.out.println(indexArr[i] + "]");
                }
            }
        }

    }
}
